import { WebSocketServer, WebSocket } from 'ws';

const wss = new WebSocketServer({ port: 3002 });
console.log('WebSocket服务器已启动，监听端口3002');

wss.on('connection', (ws: WebSocket) => {
  console.log('客户端已连接，当前连接数：', wss.clients.size);

  // 发送欢迎消息
  ws.send(JSON.stringify({
    type: 'system',
    message: '欢迎连接到服务器'
  }));

  // 监听客户端消息
  ws.on('message', (data: Buffer) => {
    const message = data.toString();
    console.log('收到客户端消息：', message);

    try {
      const parsedMessage = JSON.parse(message);
      
      // 转发消息给其他客户端（排除发送方）
      wss.clients.forEach(client => {
        // 条件1：客户端连接状态正常
        // 条件2：排除当前发送消息的客户端（ws === client 表示是发送方）
        if (client.readyState === WebSocket.OPEN && client !== ws) {
          client.send(JSON.stringify({
            type: 'broadcast',
            from: '其他用户', // 实际场景可替换为发送方标识（如用户ID）
            message: parsedMessage.content
          }));
        }
      });

      // 给发送方一个“已收到”的确认（可选）
      ws.send(JSON.stringify({
        type: 'confirm',
        message: '消息已收到并转发给其他用户'
      }));

    } catch (error) {
      ws.send(JSON.stringify({
        type: 'error',
        message: '消息格式错误'
      }));
    }
  });

  ws.on('close', () => {
    console.log('客户端断开连接，当前连接数：', wss.clients.size);
  });
});